High speed data links are often used to interface between different system components. For example, high speed data links may be used to interface between a memory controller and a double data rate (DDR) synchronous dynamic random access memory (SDRAM) device. A DDR SDRAM interface may receive aligned data (DQ) and read data strobe (DQS) signals from a DDR SDRAM device for transfer to a memory controller. The DDR SDRAM interface is responsible for providing the appropriate DQ-DQS timing relationship to provide, for example, an adequate setup and hold time margin within a data valid window. The DQ-DQS timing alignment process may require a handshake mechanism to control the start of the data streaming and training patterns. For example, for data streaming applications, the DQS strobe signal toggles continuously, and there needs to be a proper handshake after a reset between the high speed interface and the DDR memory.
U.S. Pat. No. 7,443,741, entitled “DQS Strobe Centering (Data Eye Training) Method,” discloses a software-based method for calibrating a data valid window for DDR memory applications. Generally, the disclosed calibration method maintains the read data strobe (DQS) substantially in the center of a defined data valid window. In some environments, however, such as non-memory applications, including data streaming applications, a controller or other processor may not be available to execute the software-based calibration method or may not have access to the high speed data on the data links.
A need therefore exists for hardware-based methods and apparatus for training high speed data links, such as High-Speed Transceiver Logic (HSTL) links, used in data transfer applications. A further need exists for hardware-based techniques for training the high speed data links that can be employed even if a controller is available to reduce the time for date eye training, relative to software-based calibration methods. Yet another need exists for hardware-based data eye training for data streaming applications that is programmable to meet skew and jitter requirements of a given platform and to support different training patterns.